package co.gov.medellin.sdep.sisdep.model;

import java.sql.SQLException;
import java.util.Map;
import java.util.List;

import co.gov.medellin.sdep.sisdep.common.SISDEPException;
import co.gov.medellin.sdep.sisdep.common.dto.GenericComponentVO;
import co.gov.medellin.sdep.sisdep.common.dto.GenericComponentValueVO;

/**
 * <p>
 * Interface para el acceso a la fuente de datos de listas valor tipo comunes a los modulos de BCOPO.
 * </p>
 * <p>
 * Copyright (c) 2011<BR>
 * Consult-Soft S.A.<BR>
 * Created on: Oct 24, 2011<BR>
 * 
 * @author atabares
 * </p>
 */
public interface IMasterList {

		/**
		 * Obtiene el mapa que contiene los datos asociados a cada uno de los componentes genericos de BCOPO.
		 * @return HashMap Mapa con las listas de los componentes genericos y sus valores asociados.
		 * @throws SQLException
		 */
		Map getGenericComponents() throws SQLException;
		
		/**
		 * Metodo que permite obtener el listado de Tipos definidos en el sistema. Es posible
		 * buscar por parte del nombre del tipo. Para obternerlos todos se una el % en como
		 * valor del parametro de la consulta.
		 *  
		 * @author carlos.perez@consult-soft.com  03-02-2012
		 * @param genCompVO
		 * @return
		 * @throws SISDEPException
		 */
		List loadTypeMasterList(GenericComponentVO genCompVO) throws SISDEPException;
		
		/**
		 * Metodo que permite la actualizacion de los datos un TIPO en la lista maestra.
		 * @author carlos.perez@consult-soft.com  06-02-2012 
		 * @param genCompVO
		 * @throws SISDEPException
		 */
		void updateTypeMasterList(GenericComponentVO genCompVO) throws SISDEPException;

		/**
		 * Metodo que permite la insercion de los datos de un nuevo TIPO en la lista maestra.
		 * @author carlos.perez@consult-soft.com  06-02-2012 
		 * @param genCompVO
		 * @throws SISDEPException
		 */
		void saveTypeMasterList(GenericComponentVO genCompVO) throws SISDEPException;

		/**
		 * Metodo que permite obtener el listado de Valores para un Tipo definido en el sistema. Es posible
		 * buscar por parte del nombre del valor tipo. Para obternerlos todos se una el % en como
		 * valor del parametro de la consulta.
		 *  
		 * @author carlos.perez@consult-soft.com  07-02-2012
		 * @param genCompVO
		 * @return
		 * @throws SISDEPException
		 */
		List loadTypeValueMasterList(GenericComponentValueVO gcvSearchVO) throws SISDEPException;
		
		/**
		 * Metodo que permite la actualizacion de los datos un VALOR TIPO en la lista maestra.
		 * @author carlos.perez@consult-soft.com  07-02-2012 
		 * @param genCompVO
		 * @throws SISDEPException
		 */
		void updateTypeValueMasterList(GenericComponentValueVO gcvVO) throws SISDEPException;

		/**
		 * Metodo que permite la insercion de los datos de un nuevo VALOR TIPO en la lista maestra.
		 * @author carlos.perez@consult-soft.com  07-02-2012 
		 * @param genCompVO
		 * @throws SISDEPException
		 */
		void saveTypeValueMasterList(GenericComponentValueVO gcvVO) throws SISDEPException;
	
}
